Last call for Luminary nominations, SQLite3 full-text search and more! | This Week in Rails
Rails Luminary Awardsは、Railsのエコシステムとコミュニティに貢献した人を称える表彰です
railtiesに関する変更です
railsのジェネレーターには --dev というオプションがあります
このオプションは、rails本体(rails/rails)をローカルブランチで変更したときに動作確認をするために使います
Contributingガイドに次のように記載されています
code:sh
cd rails
bundle exec rails new ~/my-test-app --dev
このプルリクエストでは、devcontainerのジェネレートコマンドを --dev オプションを付けて実行したらエラーになることを指摘し、エラーにならないように修正しています
code:sh
rails new example_app --dev
cd example_app
bin/rails g devcontainer --dev
code:error
rails_path/railties/lib/rails/generators/rails/devcontainer/devcontainer_generator.rb:157:in `local_rails_mount': uninitialized constant Rails::Generators::RAILS_DEV_PATH (NameError)
Active Supportに関する変更です
Rails credentialsなどの暗号化ファイルに意図せず改行が含まれる場合があり、その場合、復号化に失敗します
エディターが勝手に改行をいれる場合などもありますよね
また、この問題によるエラーが発生した場合、エラーメッセージは一般的な表現になっているため、改行に原因があると特定するのは難しいと考えられます
code:sh
/Users/chris/.local/share/mise/installs/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.2.0/lib/active_support/messages/codec.rb:57:in `catch_and_raise': missing separator (ActiveSupport::MessageEncryptor::InvalidMessage)
from /Users/chris/.local/share/mise/installs/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.2.0/lib/active_support/message_encryptor.rb:242:in `decrypt_and_verify'
from /Users/chris/.local/share/mise/installs/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.2.0/lib/active_support/encrypted_file.rb:109:in `decrypt'
from /Users/chris/.local/share/mise/installs/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.2.0/lib/active_support/encrypted_file.rb:72:in `read'
from /Users/chris/.local/share/mise/installs/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.2.0/lib/active_support/encrypted_configuration.rb:57:in `read'
from /Users/chris/.local/share/mise/installs/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.2.0/lib/rails/commands/credentials/credentials_command.rb:38:in `show'
そこで、暗号化ファイルの中身を String#strip することで、文字列先頭と末尾の空白文字(改行を含む)を全て取り除いています
これにより、同様の問題によるエラーは発生しなくなります
railtiesに関する変更です
rails credentials コマンドにおいて --environment オプションをつけると独自の環境名を使うことができます
このプルリクエストでは rails credentials:diff コマンドだけがこのオプションをサポートしていないことを指摘し、サポートするように修正をしています
ちなみに、rails credentials:diff コマンドは、認証情報(credentials)の変更点を確認するために使います
config/credentials.yml.enc の暗号化された資格情報ファイルはもちろん目視では内容を確認できないため、このコマンドを使うことで変更点を簡単に確認できます
code:例
rails credentials:edit
rails credentials:diff
+ aws:
+ access_key_id: NEW_ACCESS_KEY
+ secret_access_key: NEW_SECRET_KEY